import axios from "axios";
import {ElMessage} from "element-plus";

const request = axios.create({
  // 本地地址
  // baseURL: 'http://localhost:9090',
  // baseURL:'http://57814ss7cg62.vicp.fun',
  baseURL: import.meta.env.VITE_BASE_URL,
  timeout:30000
})


// request.interceptors.request.use(onFulfilled, onRejected):
// onFulfilled: 在发送请求之前对请求配置进行处理。这里将请求头中的Content-Type设置为application/json;charset=utf-8。
// onRejected: 如果请求过程中发生错误，则直接返回一个被拒绝的Promise。
request.interceptors.request.use(config => {
  config.headers['Content-Type'] = 'application/json;charset=UTF-8'
  // 这里config包含所有请求信息，return config是为了继续向下执行。
  return config;
}, error => {
  // 当请求过程中发生错误时调用。这里直接返回一个被拒绝的Promise，表示请求失败。
  return Promise.reject(error);
})

request.interceptors.response.use(
  response => {
    // 提取响应体数据。
    let res = response.data
    // 检查响应类型是否为blob（通常用于下载文件）。如果是，则直接返回原始响应数据。
    if(response.config.responseType === 'blob'){
      return res
    }
    // 如果响应体是字符串格式，则尝试将其解析为JSON对象。如果解析失败则保留原值。
    if(typeof res === 'string'){
      // 返回处理后的响应数据
      res = res ? JSON.parse(res) : res
    }
    return res;
  },
  error => {
    if(error.response.status === 400){
      ElMessage.error('未找到请求接口')
    }else if(error.response.status === 500){
      ElMessage.error('服务器错误')
    }else {
      console.error(error.message);
    }
    return Promise.reject(error);
  }
)

export default request;
